import request from "@/utils/request";

const COMMON_BASE_URL = "/api";

/**
 * 稳控切负荷 API 模块
 */
export const HMI_SHEDDING_API = {
  /**
   * 获取切负荷信息
   * @param cpu CPU 编号
   * @returns Promise<SheddingInfo>
   */
  fetchSheddingInfo: (cpu: number = 1) => {
    return request<any, SheddingInfo>({
      url: `${COMMON_BASE_URL}/shedding/${cpu}`,
      method: "get",
    });
  },

  /**
   * 修改切负荷层级
   * @param cpu CPU 编号
   * @param type 类型 (0: 切负荷层级, 1: 恢复负荷层级)
   * @param data 修改数据
   * @returns Promise<SheddingUpdateResponse>
   */
  updateSheddingLevel: (cpu: number = 1, type: number, data: SheddingUpdateRequest) => {
    return request<any, SheddingUpdateResponse>({
      url: `${COMMON_BASE_URL}/shedding/${cpu}/${type}`,
      method: "post",
      data,
    });
  },
};

/**
 * 切负荷信息接口
 */
export interface SheddingInfo {
  /** 切负荷层级名称 */
  shedding_name: string;
  /** 切负荷层级值 */
  shedding_value: number;
  /** 切负荷层级最小值 */
  shedding_min: number;
  /** 切负荷层级最大值 */
  shedding_max: number;
  /** 切负荷层级是否启用 */
  shedding_enable: boolean;
  /** 恢复负荷层级名称 */
  recover_name: string;
  /** 恢复负荷层级值 */
  recover_value: number;
  /** 恢复负荷层级最小值 */
  recover_min: number;
  /** 恢复负荷层级最大值 */
  recover_max: number;
  /** 恢复负荷层级是否启用 */
  recover_enable: boolean;
}

/**
 * 切负荷更新请求接口
 */
export interface SheddingUpdateRequest {
  /** 层级值 */
  value: number;
}

/**
 * 切负荷更新响应接口
 */
export interface SheddingUpdateResponse {
  /** CPU 编号 */
  cpu: number;
  /** 类型 (0: 切负荷层级, 1: 恢复负荷层级) */
  type: number;
  /** 操作状态 */
  status: boolean;
}

/**
 * 切负荷层级类型枚举
 */
export enum SheddingType {
  /** 切负荷层级 */
  SHEDDING = 0,
  /** 恢复负荷层级 */
  RECOVER = 1,
}
